// 给定一个n*n大小的二维矩阵matrix，将二位矩阵matrix顺时针旋转90,说明，不使用额外的数组空间

// 思路，一个[i,j]的元素，顺时针转90度后的位置为[j, len - i - 1],只需要把4分之一的点遍历替换一遍即可，一次遍历确定4个点的位置

function rotate(matrix) {
    let n = matrix.length
    // 针对奇数的情况下，防止少处理或者多处理节点
    for (let i = 0; i < Math.floor((n + 1) / 2); i++) {
        for (let j = 0; j < Math.floor(n / 2); j++) {
            [matrix[i][j], matrix[n - j - 1][i] ,matrix[n - i - 1][n - j - 1] , matrix[j][n - i - 1]] = [matrix[n - j - 1][i], matrix[n - i - 1][n - j - 1], matrix[j][n - i - 1], matrix[i][j]]
        }
    }
    return matrix
}

let matrix1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let matrix2 = [[5, 1, 9, 11], [2, 4, 8, 10], [13, 3, 6, 7], [15, 14, 12, 16]]
rotate(matrix1)
console.log(matrix1);

rotate(matrix2)
console.log(matrix2);